from flask import Flask,render_template
from markupsafe import Markup
from pyecharts.charts import Line
from pyecharts import options as opts
import pandas as pd

app = Flask(__name__)

#读文件
df = pd.read_csv("F:/大二下学期/可视化/可视化/第四次作业/gdp.csv")
#print(df)

province = input("请输入你想要查询的省份:")
#province = '广东'    #测试样例

#模糊匹配       #查询'广东省'可以输入广东，'省'字可以不输入。'内蒙古'可以简输入成'内蒙'
list = df.iloc[:,0].tolist()
for str in list:
    if province in str:
        if len(province) > 1:
            province = str
            break

if province in list:

    #print("查询"+province+"历年gdp信息")

    #取相关省份数据数据(Series)
    province_gdp = df.iloc[df[df['province'] == province].index[0]]
    #print(province_gdp)

    #年份和对应gdp进行匹配，形成字典
    cg = province_gdp.iloc[1:]
    #print(cg)
    gdp_years = [{"year": year, "gdp": gdp} for year, gdp in zip(cg.index, cg.values)]
    #print(gdp_years)

    line = (
            Line()
                .add_xaxis(cg.sort_index().index.tolist())
                .add_yaxis(province,cg.sort_index().values.tolist())
                .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    )

    #根路由
    @app.route('/')     #flask默认先进入根目录，我不会修改默认值，所以我这里设置先进入根目录，再跳转到其他网页
    def index():
        return render_template("index.html",province=province)

    #展示数据
    @app.route('/gdp/<province>')   #这里必须要添加一级路由'gdp'，不然会报错，我也不知道为什么
    def gdp(province):  #这里必须传入参数province，gdp_years不需要传，不然会报错，我也不知道为什么
        return render_template("gdp.html",province=province,gdp_years=gdp_years)

    #可视化图表
    @app.route('/gdp/可视化图表')
    def charts():
        return Markup(line.render_embed())

    #启动
    app.run()

else:
    print("非法输入！！！")